package api

import (
	"gitee.com/love_bass/go-area"
	"github.com/gin-gonic/gin"
	"go-base/internal/global"
)

// QueryClientIpRegionHandle
// @Summary 查询IP归属地
// @Description 返回IP归属地，若未指定参数，则返回访问者的IP归属地
// @Tags 区域
// @Param Ip query string false "IP地址，若未指定该参数，则返回访问者的IP归属地"
// @Accept  json
// @Produce  json
// @Success 200
// @Router /api/areas/region [get]
// @security ApiKeyAuth
func QueryClientIpRegionHandle(c *gin.Context) {
	// 获取客户端请求的HTTP版本
	httpVersion := c.Request.Proto
	region, _ := area.GetIpRegion(c.ClientIP())
	defer global.Console.Debug("客户端版本：%s；来源地址：%s；归属地：%+v", httpVersion, c.ClientIP(), region)

	// 1、获取客户端IP
	params := Params{Ctx: c}
	ip := params.Query("IP")
	if ip == "" {
		ip = c.ClientIP()
	}
	// 2、查询IP所在地区
	result, err := area.GetIpRegion(ip)
	if err != nil {
		c.JSON(500, HttpResponse{
			Code:    500,
			Message: "查询IP所在地区失败",
			Data:    err.Error(),
		})
		return
	}
	// 3、返回结果
	c.JSON(200, HttpResponse{
		Code:    200,
		Message: "成功",
		Data:    result,
	})
}
